<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>初识promise</title>
</head>

<body>
  <!-- 什么是Promise？
        1. 抽象表达:
        
          ​1) Promise 是一门新的技术(ES6 规范)
          
          ​2)Promise 是 JS 中`进行异步编程`的新解决方案 备注：旧方案是单纯使用回调函数
        
        2. 具体表达:
        
          1) 从语法上来说: Promise 是一个`构造函数`
          
          2) 从功能上来说: promise 对象用来封装一个异步操作并可以获取其成功/ 失败的结果值 

        3.具体使用：

        （1）Promise 不是回调，是一个内置的构造函数，是程序员自己 new 调用的。

        （2）new Promise 的时候，要传入一个回调函数（executor 函数），它是同步的回调，会立即在主线程上执行。

        （3）executor 函数会接收到 2 个参数，它们都是函数，分别用形参：resolve、reject 接收。

        ​    ① 调用 resolve，会让 Promise 实例状态变为：成功 ( fulfilled )，同时可以指定成功的 value。

        ​    ② 调用 reject，会让 Promise 实例状态变为：失败 ( rejected )，同时可以指定失败的 reason。
  -->
  <script>
    const p = new Promise((resolve, reject) => {
      console.log('Promise传入的回调函数');   //先输出这一行，表明这是一个同步的回调，会立即在主线程上执行
      resolve('成功的value');
      // reject('失败原因'); //状态只能改变一次，之后的的调用都是无效的
    })
    console.log('主线程代码执行--');
    console.log(p);   //Promise {<fulfilled>: '成功的value'}
  </script>
</body>

</html>